﻿// ***********************************************************************
// Assembly         : Logica
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="LOG_Clientes.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using AccesoDatos.Modulos.ClasesAccesoDatos;
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesLogica namespace.
/// </summary>
namespace Logica.Modulos.ClasesLogica
{
    /*Título: LOG_Clientes
      Tipo: Clase
      Resumen:Hace el llamado de diferentes funciones de acceso a datos, sobre cargando métodos con objetos que viene del GUI. 
      Retorno: N/A
      Autor: Julián Gaona
      Fecha: 13/07/13*/

    /// <summary>
    /// Class LOG_Clientes.
    /// </summary>
    public class LOG_Clientes:Negocio
    {


        /*Título: CRE_Cliente
          Tipo: Método
          Variables: 
             
            objBD
             
          Resumen:Método recibe propiedades objeto de tipo MOD_Clientes, abre la conexión a la base de datos y  sobre carga la función CRE_CLiente de acceso a datos con el objeto. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: N/A
          Autor: Julián Gaona
          Fecha: 13/07/13*/

        /// <summary>
        /// Crs the e_ cliente.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void CRE_Cliente(MOD_Clientes obj)
        {
            try
            {
                this.IniciarTransaccion();
               
                AD_Clientes objBD = new AD_Clientes();

                objBD.CRE_Cliente(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        /*Título: DEL_Clientes
          Tipo: Método
          Variables: 
             
            codigo
            objBD
         
          Resumen:Método recibe el código del cliente, abre la conexión a la base de datos y  sobre carga la función DEL_cliente de acceso a datos con el código. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: N/A
          Autor: Julián Gaona
          Fecha: 13/07/13*/

        /// <summary>
        /// Des the l_ clientes.
        /// </summary>
        /// <param name="codigo">The codigo.</param>
        public void DEL_Clientes(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Clientes objBD = new AD_Clientes();

                objBD.DEL_cliente(this.comando, codigo);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }


        /*Título: UPD_Cliente
          Tipo: Método
          Variables: 
             
            obj
            objBD
         
          Resumen:Método recibe propiedades objeto de tipo MOD_Clientes, abre la conexión a la base de datos y  sobre carga la función UPD_Cliente de acceso a datos con el objeto. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: N/A
          Autor: Julián Gaona
          Fecha: 13/07/13*/
        /// <summary>
        /// Ups the d_ cliente.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void UPD_Cliente(MOD_Clientes obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Clientes objBD = new AD_Clientes();

                objBD.UPD_Cliente(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }

        }

        /*Título: SEL_Grid_Cliente
          Tipo: Método
          Variables: 
             
            lista
         
          Resumen:Método abre la conexión a la base de datos y  sobre carga la función SEL_Grid_Cliente de acceso a datos con la lista de tipo MOD_Clientes. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: lista
          Autor: Julián Gaona
          Fecha: 13/07/13*/

        /// <summary>
        /// Ses the l_ grid_ cliente.
        /// </summary>
        /// <returns>List{MOD_Clientes}.</returns>
        public List<MOD_Clientes> SEL_Grid_Cliente()
        {
            try
            {
                this.AbrirConexion();

                AD_Clientes objBD = new AD_Clientes();

                List<MOD_Clientes> lista = objBD.SEL_Grid_Clientes(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        /*Título: SEL_ClienteByID
          Tipo: Método
          Variables: 
             
            lista
         
          Resumen:Método abre la conexión a la base de datos y  llama la función SEL_ClienteByID de acceso a datos sobrecargando la lista de tipo MOD_Clientes. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: lista
          Autor: Julián Gaona
          Fecha: 13/07/13*/
        /// <summary>
        /// Ses the l_ cliente by identifier.
        /// </summary>
        /// <param name="CLI_CODCLIENTE">The cl i_ codcliente.</param>
        /// <returns>MOD_Clientes.</returns>
        public MOD_Clientes SEL_ClienteByID(int CLI_CODCLIENTE)
        {
            try
            {
                this.AbrirConexion();

                AD_Clientes objBD = new AD_Clientes();

                MOD_Clientes objCliente = objBD.SEL_ClienteByID(this.comando, CLI_CODCLIENTE);

                this.CerrarConexion();

                return objCliente;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }
        /*Título: SEL_ESTCLIENTE
          Tipo: Método
          Variables: 
             
            lista
         
          Resumen:Método abre la conexión a la base de datos y llama la función SEL_ESTCLIENTE de acceso a datos  sobrecargando la lista de tipo MOD_Clientes. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: lista
          Autor: Julián Gaona
          Fecha: 13/07/13*/
        /// <summary>
        /// Ses the l_ estcliente.
        /// </summary>
        /// <returns>List{MOD_Clientes}.</returns>
        public List<MOD_Clientes> SEL_ESTCLIENTE()
        {
            try
            {
                this.AbrirConexion();

                AD_Clientes objBD = new AD_Clientes();

                List<MOD_Clientes> lista = objBD.SEL_ESTCLIENTE(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        /*Título: SEL_TIPO_CLIENTE
          Tipo: Método
          Variables: 
             
            lista
         
          Resumen:Método abre la conexión a la base de datos y llama la función SEL_TIPO_CLIENTE de acceso a datos  sobrecargando la lista de tipo MOD_Clientes. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: lista
          Autor: Julián Gaona
          Fecha: 13/07/13*/
        /// <summary>
        /// Ses the l_ tip o_ cliente.
        /// </summary>
        /// <returns>List{MOD_Clientes}.</returns>
        public List<MOD_Clientes> SEL_TIPO_CLIENTE()
        {
            try
            {
                this.AbrirConexion();

                AD_Clientes objBD = new AD_Clientes();

                List<MOD_Clientes> lista = objBD.SEL_TIPO_CLIENTE(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        /*Título: SEL_ClienteByNIT
            Tipo: Método
            Variables: 
             
              CLI_NIT
         
            Resumen:Método abre la conexión a la base de datos y llama la función SEL_ClienteByNIT de acceso a datos  sobrecargando el método con el NIT. Al terminar cierra la conexión a la Base de Datos. 
            Retorno: cant_cli
            Autor: Julián Gaona
            Fecha: 13/07/13*/
        /// <summary>
        /// Ses the l_ cliente by nit.
        /// </summary>
        /// <param name="CLI_NIT">The cl i_ nit.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_ClienteByNIT(string CLI_NIT)
        {
            try
            {
                this.AbrirConexion();

                AD_Clientes objBD = new AD_Clientes();

                int cant_cli = objBD.SEL_ClienteByNIT(this.comando, CLI_NIT);

                this.CerrarConexion();

                return cant_cli;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        /*Título: SEL_Grid_Clientes
         Tipo: Método
         Variables: 
             
           lista
           objBD
         
         Resumen:Método abre la conexión a la base de datos y llama la función SEL_Grid_Clientes de acceso a datos  sobrecargando la lista de tipo MOD_Clientes. Al terminar cierra la conexión a la Base de Datos. 
         Retorno: lista
         Autor: Julián Gaona
         Fecha: 13/07/13*/

        /// <summary>
        /// Ses the l_ grid_ clientes.
        /// </summary>
        /// <returns>List{MOD_Clientes}.</returns>
        public List<MOD_Clientes> SEL_Grid_Clientes()
        {
            try
            {
                this.AbrirConexion();

                AD_Clientes objBD = new AD_Clientes();

                List<MOD_Clientes> lista = objBD.SEL_Grid_Clientes(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        /*Título: DEL_Clientes
          Tipo: Método
          Variables: 
             
            codigo
            objBD
         
          Resumen:Método recibe el código del cliente, abre la conexión a la base de datos y  sobre carga la función DEL_cliente de acceso a datos con el código. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: N/A
          Autor: Julián Gaona
          Fecha: 13/07/13*/

        /// <summary>
        /// Des the l_ cliente.
        /// </summary>
        /// <param name="codigo">The codigo.</param>
        public void DEL_Cliente(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Clientes objBD = new AD_Clientes();

                objBD.DEL_cliente(this.comando, codigo);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

    }
}
